package com.briup.hdfs;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.hdfs.DistributedFileSystem;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

/**
 * TODO
 *
 * @author 最美如初
 * @version 1.0
 * @date 2021/7/16
 * @description FileSystem对象的构建
 */
public class FirstHDFS {
    public static void main(String[] args) throws IOException, URISyntaxException, InterruptedException {
        //获取FileSystem对象
        //DistributedFileSystem针对hdfs分部式文件系统的对象
        //第一种方式
       /* Configuration conf=new Configuration();
        conf.set("fs.defaultFS","hdfs://172.16.0.4:9000");
        FileSystem fs = FileSystem.get(conf);
        System.out.println(fs);
        System.out.println(fs.getClass().getName());*/
        //第二种方式
      /*  Configuration conf=new Configuration();
        FileSystem fs =
                //FileSystem.get(new URI("hdfs://172.16.0.4:9000"), conf);
         //FileSystem最终获取的对象是针对什么文件系统和uri参数有关
         //hdfs：开头构建的是DistributedFileSystem
         //file 构建的是LocalFileSystem
         //ftp  构建的是FTPFileSystem
         //http 构建的是HttpFileSystem

                FileSystem.get(
                        new URI("file://D:\\input\\1.txt"),
                        conf);
        System.out.println(fs);
        System.out.println(fs.getClass().getName());*/

        //第三种方式
        /*Configuration conf=new Configuration();
        URI uri=new URI("hdfs://172.16.0.4:9000");
        //第三个参数表示指明操作文件系统的用户身份
        FileSystem fs=FileSystem.get(uri,conf,"hdfs");
        System.out.println(fs);*/
        //第四种方式
        Configuration conf=new Configuration();
        URI uri=new URI("hdfs://172.16.0.4:9000");
        FileSystem fs = FileSystem.newInstance(uri,conf);
        System.out.println(fs);

    }
}
